语法:
regexObj.exec(str)
作用是检测 str
中是否有匹配 regexOjb
的部分,返回值是一个数组。简单的例子:
var re = /\d/g
var str = 'a11a22a11a22'
re.exec(str) // 第1次执行
// Result: ["1", index: 1, input: "a112211"]
// 索引0: 匹配的值
// 属性'index': 这个值所在位置
re.exec(str) // 第2次执行 (注意:re 如果没有加 g 标识的话,执行结果和第1次一样,不会向后匹配)
// Result: ["1", index: 2, input: "a112211"]
如果 re
中有分组
,则会把分组放入执行结果的 [1]...[n]
中
改变一下上例中的 re
:
var re = /(a\d)(\d)/g // 两个分组:(a\d)、(\d)
var str = 'a11a22a11a22'
re.exec(str) // 第1次执行
// Result: ["a11", "a1", "1", index: 0, input: "a11a22a11a22"]
// 索引0: 匹配的值
// 索引1: 匹配第1个分组的值
// 索引2: 匹配第2个分组的值
// 属性'index': 这个值所在位置
re.exec(str) // 第2次执行
// Result: ["a22", "a2", "2", index: 3, input: "a11a22a11a22"]
利用exec() 会把匹配内容中分组的值分别得到
的特性,我们可以很方便得从一段字符串中取得目标信息。如:
var re2 = /(\d{1,4}) (.*?) (\w{2} \d{4,5}),?/gi
var [_ , nb, addr, zip] = re2.exec("123 Main Street St. Louisville OH 43071")
// nb: 123
// addr: Main Street St. Louisville
// zip: OH 43071
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。